$(function () {
	//初始化用户信息
	initUserInfo();
	//下拉控件初始化
    initSelect();
	
	var account = false;
    //初始化table并刷新数据
    $('#tbTableData').bootstrapTable(init);
    
    //表单验证初始化
    initdataFormValid();
    initpwdFormValid();

    //新增按钮点击事件
    $("#btnAdd").click(function(){
    	var iframeName = self.frameElement.getAttribute('name');
	    $("#btnAdd").attr("href","user/user_add.html?iframeName="+iframeName+"");
    });
    
    //查询Button的点击事件
    $("#btnQuery").click(function(){
    	//刷新列表
    	$("#tbTableData").bootstrapTable('refresh', init);
    });
    
    //批量删除按钮点击事件
    $("#btnDelete").click(function(){
    	var rows= $("#tbTableData").bootstrapTable('getSelections');  
        if(rows.length <=0 ){  
        	swal("很抱歉", "请您勾选您要删除的记录！","info");
        }else{
        	var userIds = new Array();
        	for(var i = 0; i < rows.length; i++){
        		userIds.push(rows[i].userId);
        	}
        	//批量删除基础数据信息
        	deleteModal(userIds);
        }
    });
    
    //保存按钮点击事件
    $("#btnSave").click(function(){
    	saveData();//保存数据
    });
    
    //用户类型
    CommonUtils.findBaseDataOption("用户类型","#selUserType","TMOMP_USER_TYPE",1);
	
	//头像上传点击事件
	$("#head-img").click(function(){
		$("input[name='headImage']").click();
	})
	
	$("#btnImport").click(function(){
		$("#file3").click();
	})
	
});

//查询的参数
var queryParams = function (params) {
    var temp = {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
        limit: params.limit,   //页面大小
        offset: params.offset,  //页码
        name: $("#selName").val(),
        userType: $("#selUserType").val(),
        dataType: "1"//类型
    };
    return CommonUtils.encapsulationData(temp);
};

//操作
var actionFormatter = function(value, row, index) {
    var result = "";
    var iframeName = self.frameElement.getAttribute('name');
    result += "<a power='UserUpdate' href='user/user_add.html?userId="+CommonUtils.compile(value)+"&iframeName="+iframeName+"&type="+CommonUtils.compile("2")+"' class='btn btn-xs blue J_menuItem power-a' title='修改用户'><span class='glyphicon glyphicon-pencil'><p style='display:none;'>修改用户</p></span></a>";
    if(value!="1"){
    	result += "<a power='UserDelete' href='javascript:;' class='btn btn-xs red power-a' onclick=\"deleteModal('" + value + "')\" title='删除'><span class='glyphicon glyphicon-remove'></span></a>";
    }
    result += "<a power='UserDetail' href='user/user_info.html?userId="+CommonUtils.compile(value)+"&type="+"' class='btn btn-xs green J_menuItem power-a' title='用户详情'><span class='glyphicon glyphicon-search'><p style='display:none;'>用户详情</p></span></a>";
    result += "<a power='UserUpdatePwd' href='javascript:;' class='btn btn-xs green power-a' onclick=\"showModal(4,'"+ value +"')\" title='修改密码'><span class='glyphicon glyphicon-folder-close'></span></a>";
    return result;
}

//时间格式化
var dataFormatter = function(value){
	if(null != value && "" != value){
		return value.replace(".0","");
	}
	return "";
}

// 头像填充
var headImageFormatter = function(value){
	if(null != value && "" != value){
        if(value.indexOf("/upload/")>=0 || value.indexOf("\\upload\\")>=0){
            var url = CommonUtils.getServerRoot() + value;
            return "<img style='height: 50px;' src='"+url+"'/>";
        }else{
            return "<img style='height: 50px;' src='"+value+"'/>";
        }
	}
	return "<img style='height: 50px;' src='../img/photos.png'/>";
}

//bootstrapTable初始化参数
var init = {
    url: '/init/user/findUserList', //请求后台的URL（*）
    method: 'post',                      //请求方式（*）
    toolbar: '#toolbar',                //工具按钮用哪个容器
    striped: true,                      //是否显示行间隔色
    cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
    pagination: true,                   //是否显示分页（*）
    sortable: true,                     //是否启用排序
    sortOrder: "asc",                   //排序方式
    queryParams: queryParams,           //传递参数（*）
    sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
    pageNumber:1,                       //初始化加载第一页，默认第一页
    pageSize: 10,                       //每页的记录行数（*）
    pageList: [10, 25, 50, 100],        //可供选择的每页的行数（*）
    search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
    strictSearch: true,
    showColumns: true,                  //是否显示所有的列
    showRefresh: true,                  //是否显示刷新按钮
    minimumCountColumns: 2,             //最少允许的列数
    clickToSelect: false,                //是否启用点击选中行
    //height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
    uniqueId: "userId",                 //每一行的唯一标识，一般为主键列
    showToggle:true,                    //是否显示详细视图和列表视图的切换按钮
    cardView: false,                    //是否显示详细视图
    detailView: false,                   //是否显示父子表
	columns: [{
			checkbox: true
		}, {
			 field:'userId',
             title: '操作',
             width: '150',
             align: 'center',
             valign: 'middle',
             formatter: actionFormatter
		},{
			field: 'headImageUrl',
			title: '照片',
			formatter: headImageFormatter
		}, {
			field: 'name',
			title: '姓名'
		},{
			field: 'sexName',
			title: '性别',
			align: 'center'
		},{
			field: 'age',
			title: '年龄',
			align: 'center'
		},{
			field: 'phone',
			title: '电话',
			sortable : true
		},{
			field: 'cardNo',
			title: '身份证',
			visible: false,
			sortable : true
		},{
			field: 'account',
			title: '账号',
			sortable : true
		},{
//			field: 'businessName',
//			title: '加盟商名称',
//			sortable : true
//		},{
			field: 'orgName',
			title: '组织单位',
			sortable : true
		},{
			field: 'email',
			title: '邮箱',
			sortable: true
		}, {
			field: 'createByName',
			title: '创建人'
		}, {
			field: 'createDate',
			title: '创建时间',
			formatter: dataFormatter
		}, {
			field: 'lastUpdateByName',
			visible: false,
			title: '最后更新人'
		}, {
			field: 'lastUpdateDate',
			visible: false,
			title: '最后更新时间',
			formatter: dataFormatter
		}
	],
	onLoadSuccess:function(data){
		initLoadSuccess(data);
	},
	onLoadError:function(status, res){
		errorFunc(res,status);
	}
}

//表单验证初始化
var initdataFormValid = function(){
	var e = "<i class='fa fa-times-circle'></i> ";
	var validate = $("#dataForm").validate({
		rules : {
			name :{
				required:true,
				maxlength:10
			},
			account: {
				required:true,
				account:true,
				judeOnly:true,
				maxlength:20
			},
			cardNo:{
				required:true,
				maxlength:18,
				minlength:18
			},
			email:{
				email:true
			},
			phone:{
				required:true
			},
			userType:{
				required:true,
				min:1
			},
			adminAccount : {
				required : true
			},
			adminPassword : {
				required : true
			},
			password : {
				required : !0,
				minlength : 5
			},
			newPassword : {
				required : !0,
				minlength : 5,
				equalTo : "#password"
			}
		},
		messages : {
			name : {
				required:e + "请输入姓名",
				maxlength:e + "输入的姓名长度不能超过10个字符"
			},
			account :{
				required:e + "请输入账号",
				account:e + "请输入正确的账号（字母、数字或下划线）",
				judeOnly:e + "账号已存在！",
				maxlength:e + "输入的账号长度不能超过20个字符"
			} ,
			cardNo : {
				required:e + "请输入身份证号",
				maxlength:e + "输入的身份证号长度不能超过18个字符",
				minlength:e + "输入的身份证号长度不能小于18个字符"
			},
			email:{
				email:e + "请输入正确的邮箱格式" 
			},
			phone:{
				required:e + "请输入电话"
			},
			userType:e + "请选择用户类别",
			adminAccount : {
				required : e + "请输入管理员账号"
			},
			adminPassword : {
				required : e + "请输入管理员密码"
			},
			password : {
				required : e + "请输入您的密码",
				minlength : e + "密码必须5个字符以上"
			},
			newPassword : {
				required : e + "请再次输入密码",
				minlength : e + "密码必须5个字符以上",
				equalTo : e + "两次输入的密码不一致"
			}
		},
		highlight : function(e) {
			if(e.type == "radio" || e.type == "checkbox"){
				$(e).parent().parent().parent().removeClass("has-success").addClass("has-error");
			}else{
				$(e).parent().parent().removeClass("has-success").addClass("has-error");
			}
		},
		success : function(e) {
			if(e.type == "radio" || e.type == "checkbox"){
				$(e).parent().parent().parent().removeClass("has-error");//.addClass("has-success")
			}else{
				$(e).parent().parent().removeClass("has-error");//.addClass("has-success")
			}
		},
		errorElement : "span",
		errorPlacement : function(e, r) {
			if(r.is(":radio") || r.is(":checkbox")){
				e.appendTo(r.parent().parent());
			}else{
				e.appendTo(r.parent());
			}
		},
		errorClass : "help-block m-b-none",
		validClass : "help-block m-b-none"
	});
	return validate;
}
var initpwdFormValid = function(){
	var e = "<i class='fa fa-times-circle'></i> ";
	var validate = $("#pwdForm").validate({
		rules : {
//			adminAccount : {
//				required : true
//			},
//			adminPassword : {
//				required : true
//			},
			password : {
				required : !0,
				minlength : 5
			},
			newPassword : {
				required : !0,
				minlength : 5,
				equalTo : "#password"
			}
		},
		messages : {
//			adminAccount : {
//				required : e + "请输入管理员账号"
//			},
//			adminPassword : {
//				required : e + "请输入管理员密码"
//			},
			password : {
				required : e + "请输入您的密码",
				minlength : e + "密码必须5个字符以上"
			},
			newPassword : {
				required : e + "请再次输入密码",
				minlength : e + "密码必须5个字符以上",
				equalTo : e + "两次输入的密码不一致"
			}
		},
		highlight : function(e) {
			if(e.type == "radio" || e.type == "checkbox"){
				$(e).parent().parent().parent().removeClass("has-success").addClass("has-error");
			}else{
				$(e).parent().parent().removeClass("has-success").addClass("has-error");
			}
		},
		success : function(e) {
			if(e.type == "radio" || e.type == "checkbox"){
				$(e).parent().parent().parent().removeClass("has-error");//.addClass("has-success")
			}else{
				$(e).parent().parent().removeClass("has-error");//.addClass("has-success")
			}
		},
		errorElement : "span",
		errorPlacement : function(e, r) {
			if(r.is(":radio") || r.is(":checkbox")){
				e.appendTo(r.parent().parent());
			}else{
				e.appendTo(r.parent());
			}
		},
		errorClass : "help-block m-b-none",
		validClass : "help-block m-b-none"
	});
	return validate;
}
//增加自定义验证
jQuery.validator.addMethod("account", function(value, element) {
    var length = value.length;
    var account = /^[a-zA-Z_0-9]+$/;//数字、字母、下划线
    return this.optional(element) ||  account.test(value);
}, "请输入正确的账号");
jQuery.validator.addMethod("judeOnly", function(value, element) {
	var jude = false;
	//请求后台
	$.ajax({
		url:'/init/user/judgeAccount',
		data:CommonUtils.encapsulationData({account:value}),
		type:'post',  
		async:false,
		dataType:'json',  
		contentType: "application/json",
		success:function(data) {
			if(data){
				if(data.result){
					jude = true;
		   		}
			}
		} 
	});
    return this.optional(element) || jude;
}, "账号存在");

//判断弹出框类型（修改、新增、详情）并显示
var showModal =function(type,userId){
	//重置表单
	$("#pwdForm").get(0).reset();
	//重置默认头像
	$("#headImageUrl").val("");
	$(".head-img").attr("src","../images/practice/graduation22.png");
	//弹出模式窗口
	$('#tableModal').modal({show:true,backdrop: 'static', keyboard: false});  
	//重置密码
	if(type == 4){
		$('#tableModal').find("h4").html("密码修改");
		//显示区域
		$("#edit").hide();
		$("#pwd").show();
		$("#detail").hide();
		//保存按钮显示
		$("#btnSave").show();
		//重置验证
		initpwdFormValid().resetForm();
		$("#pwdForm").find(".has-error").removeClass("has-error");
		//填充隐藏userId
		$("#tableModal").find("#userId").val(userId);
	}
	//隐藏值，基础数据判断提交数据的类型
	$('#tableModal').find("#modalType").val(type);
}

//保存基础数据
var saveData=function(){
	//添加或编辑类型变量
	var type = $('#tableModal').find("#modalType").val();
	var formData = null;
	if(type == "4"){
		formData = CommonUtils.getFormJson('#pwdForm');
	}else{
		//获取表单元素所有数据集合
		formData.headImageUrl = $("#headImageUrl").val();
	}
	var url = null;
	if(type == "1"){//添加
		url = "/init/user/addUser";
		//设置角色
		var roleIds = $("#roleIds").val();
		formData.roleIds = roleIds;
	}else if(type == "2"){//修改
		url = "/init/user/updateUser";
		//设置角色
		var roleIds = $("#roleIds").val();
		formData.roleIds = roleIds;
	}else if(type == "4"){
		//验证表单数据
		if (!$("#pwdForm").valid()) {
			return;
	    }
		url = "/init/user/updatePassword";
		formData.userId = $("#tableModal").find("#userId").val();
		//移除确认密码
		delete formData.newPassword;
	}
	//请求后台
	$.ajax({
		url:url,
		data:CommonUtils.encapsulationData(formData),
		type:'post',  
		dataType:'json',  
		contentType: "application/json",
		success:function(data) {
			if(data.result){
				//消息提示款
				swal({title : "恭喜您",text : data.msg,type : "success"},function(){
					//关闭弹出框
					$("#tableModal").modal("hide");
					//刷新主列表
					$("#tbTableData").bootstrapTable('refresh', init);
				});
	   		}else{
	   			//消息提示款
				swal({title : "很抱歉",text : data.msg,type : "error"});
	   		}
		},
		error : function(req, status, err) {  
			//消息提示款
			errorFunc(req, status, err);
		}  
	});
};

//删除基础数据
var deleteModal =function(userIds){
	//删除数据模式窗口
	swal({
		title : "您确定要删除这些信息吗",
		text : "删除后将无法恢复，请谨慎操作！",
		type : "warning",
		showCancelButton : true,
		confirmButtonColor : "#DD6B55",
		confirmButtonText : "删除",
        cancelButtonText : "取消",
		closeOnConfirm : false
	}, function() {
		//记录删除基础数据的所有userId
		var param = null;
		//判断userIds是不是数组类型
		if(userIds instanceof Array){
			param = {
				userIds:userIds
			};
		}else{
			//定义一个数组
			var arr = new Array();
			arr.push(userIds);
			param = {
				userIds:arr
			};
		}
	    $.ajax({url:'/init/user/deleteUser',
	    	data:CommonUtils.encapsulationData(param),
	    	type:'post', 
	    	async:false,//同步请求
	    	dataType:'json',  
	    	contentType: "application/json",
	    	success:function(data) {  
	    		if(data.result){
	    			//消息提示款
					swal({title : "恭喜您",text : data.msg,type : "success"},function(){
						//刷新主列表
						$("#tbTableData").bootstrapTable('refresh', init);
					});
	    		}else{
		   			//消息提示款
					swal({title : "很抱歉",text : data.msg,type : "error"});
		   		}
	    	},
	    	error : function(req, status, err) { 
	    		//消息提示款
				errorFunc(req, status, err);
	    	}  
	    });
	})
}

